/* main.mjs */
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import './src/assets/styles/common.css'  // 修正后的全局样式路径
import api from './api/index.js'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

// 创建Vue应用实例
const app = createApp(App)

// 使用路由插件
app.use(router)

// 全局错误处理
app.config.errorHandler = (err, vm, info) => {
    console.error('应用出现错误:', err, info);
}

// 挂载到DOM
app.mount('#app')

// 开发环境提示
if (import.meta.env.DEV) {
    console.log('[Vue] Running in development mode');
} else {
    console.log('[Vue] Running in production mode');
}

// 添加全局异常捕获
window.onerror = function (msg, url, line, column, error) {
    console.error('未捕获的错误:', {
        message: msg,
        url: url,
        line: line,
        column: column,
        error: error
    });
    return false;
}

// 添加Promise reject异常捕获
window.onunhandledrejection = function (event) {
    console.error('未处理的 Promise 拒绝:', {
        type: event.type,
        promise: event.promise,
        reason: event.reason
    });
}

// 添加环境特定的配置
const envConfig = {
    API_BASE_URL: import.meta.env.VITE_API_BASE_URL || '',
    DEBUG: import.meta.env.DEV
};

// 添加全局 mixin 以在组件中使用环境配置
app.mixin({
    data() {
        return {
            envConfig: envConfig
        }
    }
})

// 添加性能测量工具（可选）
if (import.meta.env.DEV) {
    let start = performance.now();
    app.config.globalProperties.$measure = (label) => {
        const end = performance.now();
        console.log(`[${label}] 时间: ${end - start}ms`);
        start = end;
    }
}

app.config.globalProperties.$api = api
app.use(ElementPlus)